共计 783 个字符,预计需要花费 2 分钟才能阅读完成。
集合存储原理
data = set()
data.add('a')
print(data) # {'a'}
- 利用哈希函数将“a”转换成一个数值,例如:1280120246861766981
- 取余数:1280120246861766981 % 6 = 3
- 将“a”放在哈希表的索引 3 位置
添加删除元素
data = {"a", "b"}
data.add("c")
print(data) # {'a', 'b', 'c'}
data.update(["d", "e"]) # 添加多个元素
print(data) # {'a', 'e', 'c', 'd', 'b'}
data.remove("c") # 删除元素,如果元素不存在,会引发 KeyError
print(data) # {'a', 'e', 'd', 'b'}
data.discard("f") # 安全地删除元素,不会引发异常
print(data) # {'a', 'e', 'd', 'b'}
交并差
v1 = {"a", "b", "c"}
v2 = {"w", "b", "d"}
res = v1 & v2 # 交集 或 v1.intersection(v2)
res2 = v1 | v2 # 并集 或 v1.union(v2)
res3 = v1 - v2 # 差集 或 v1.difference(v2)
res4 = v1 ^ v2 # 对称差集 即 交集 - 并集 或 v1.symmetric_difference(v2)
print(res) # {'b'}
print(res2) # {'a', 'b', 'c', 'd', 'w'}
print(res3) # {'a', 'c'}
print(res4) # {'a', 'c', 'd', 'w'}
isdisjoint
判断两个集合是否包含相同的元素,如果没有返回 true,否则返回 false。
data = {"a", "b", "c"}
data2 = {"w", "b", "d"}
result = data.isdisjoint(data2)
print(result) # False
正文完